A business organization may be divided into departments, where each department may specialize in performing a specific task. Generally, large business organizations may include a greater number of departments than small business organizations. Each of those departments may use different customer-developed software applications to solve one or more specific problems, based on the functionality of the department. These software applications are usually written in different computer programming languages, such as Fortran and C/C++, etc. These programming languages may have difficulty in describing some problems and solutions due to the granularity the programmer has to operate at. Furthermore, computer programming languages have different syntaxes, semantics, and functionalities, and these differences introduce complexity into computer programming. Therefore, the encoding and logical evaluation mechanisms that need to be implemented are usually task-specific and do not have flexibility outside of the purpose they are designed for. In order to describe and solve the problem that the program is designed for, one must know the nature and details of the application, and must learn the syntax, semantic concepts, features and functionality of its programming language in advance.
As a result, integrating the customer-developed software applications being used by different department into a problem solving system and maintaining such a system becomes a challenging task. Some application problems may become computationally prohibitive to solve due to complexity, the very nature of the problem and/or solution, or the time to implement the solution and/or the maintenance of the resulting code base. For example, a software application used by a certain department may require an input dataset having a particular set of information. However, the unprocessed measurement data that may or may not contain the required information is usually very large in size. Manually processing the raw data into the required information is time consuming. In addition, since software applications used by different departments may be developed with different programming languages, each of them may require the input data to be organized in a particular format. However, the measurement data obtained from various measurement channels may not be organized in such a required format, and thus may not be correctly recognized by a customer-developed software application.
Consequently, there is a need to develop an integrated problem solving system by embedding a language-independent logic library and a logic engine to the customer-developed host application software as an interface to provide an orderly mechanism for describing complex data and relationships. For example, the logic library and logic engine may act as an expert system and provide mechanisms to mimic certain patterns of human operations such as classification, differentiation, symbolic pattern matching, etc. After the complex data are processed into information required by a host application, the logic engine may further organize the information into a format defined by the specific programming language of the host application.
At least one interface model has been developed to assist the interaction among software applications. For example, U.S. Pat. No. 6,832,365 to Chiles et al. (“the '365 patent”) discloses a system and method for interacting with computer programming languages at a semantic level. The '365 patent describes a system and method that models computer programming language concepts in a plurality of objects and enables a computer programmer to interact with multiple programming languages through one code model interface. The programmer may employ the code model to locate an object that implements a specific functionality and return a code model object that implements that functionality.
Although the system and method described in the '365 patent may be effective for assisting a programmer to interact with various computer programming languages, it may nonetheless be suboptimal. For example, a user of a computer program still has to know the nature and details of the application in order to describe and solve the problem that the program is designed for. In particular, a user of the computer program has to screen and process a large amount of measurement data to sort out a set of information required by the application, and further organize the information according to a certain format. In addition, the interface model disclosed by the '365 patent does not provide a host system with a dynamic, responsive state-maintaining mechanism that has provisions to self-maintain, self-regulate, and to be the basis for an orderly mechanical learning system.
The integrated problem solving system of the present disclosure is directed towards overcoming one or more of the constraints set forth above.